package com.bjbn.service;

import com.bjbn.entity.BridgePowerInfoHistory;

import java.util.List;

/**
 * 廊桥电源信息历史服务接口
 */
public interface BridgePowerInfoHistoryService {
    
    /**
     * 创建索引
     * 
     * @param indexName 索引名称
     * @return 是否创建成功
     */
    boolean createIndex(String indexName);
    
    /**
     * 删除索引
     * 
     * @param indexName 索引名称
     * @return 是否删除成功
     */
    boolean deleteIndex(String indexName);
    
    /**
     * 保存廊桥电源信息历史到ES
     * 
     * @param data 廊桥电源信息历史数据
     * @return 是否保存成功
     */
    boolean saveBridgePowerInfoHistory(BridgePowerInfoHistory data);
    
    /**
     * 批量保存廊桥电源信息历史到ES
     * 
     * @param dataList 廊桥电源信息历史数据列表
     * @return 是否保存成功
     */
    boolean saveBridgePowerInfoHistoryBatch(List<BridgePowerInfoHistory> dataList);
    
    /**
     * 根据ID查询廊桥电源信息历史
     * 
     * @param id 廊桥电源信息历史ID
     * @return 廊桥电源信息历史
     */
    BridgePowerInfoHistory findById(String id);
    
    /**
     * 根据设备名称查询廊桥电源信息历史
     * 
     * @param deviceName 设备名称
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findByDeviceNameContaining(String deviceName);
    
    /**
     * 根据厂家查询廊桥电源信息历史
     * 
     * @param brand 厂家
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findByBrand(String brand);
    
    /**
     * 根据区域查询廊桥电源信息历史
     * 
     * @param area 区域
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findByArea(String area);
    
    /**
     * 根据设备组查询廊桥电源信息历史
     * 
     * @param deviceGroup 设备组
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findByDeviceGroup(String deviceGroup);
    
    /**
     * 根据设备状态查询廊桥电源信息历史
     * 
     * @param sta 设备状态
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findBySta(String sta);
    
    /**
     * 根据IP地址查询廊桥电源信息历史
     * 
     * @param ip IP地址
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findByIp(String ip);
    
    /**
     * 根据责任部门查询廊桥电源信息历史
     * 
     * @param dept 责任部门
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findByDept(String dept);
    
    /**
     * 根据时间范围查询廊桥电源信息历史
     * 
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 廊桥电源信息历史列表
     */
    List<BridgePowerInfoHistory> findByTimeRange(java.time.LocalDateTime startTime, java.time.LocalDateTime endTime);
    
    /**
     * 统计廊桥电源信息历史总数
     * 
     * @return 历史数据数量
     */
    long count();
    
    /**
     * 删除所有数据（通过删除并重建索引）
     * 
     * @return 是否删除成功
     */
    boolean deleteAll();
}
